roslaunch
首先说之前说过的.launch文件的格式: 1.roslaunch是通过单通道来读XML文件的,有覆盖的原则,所以如果有很多个标签,那么有用的是最后一个标签,但是依赖于此是不明智的,所以推荐使用$(arg)/设置来操作重写行为
2.xml文件的标签分为两种,一种是《foo/》,另一种是《foo》《/foo》(《》换成<>)。格式的话最好有缩进。
3.替换参数(substitution args)(还没看懂) Roslaunch 标签的特性使他能够使用替换参数,目前支持的有
$(env ENVIRONMENT_VARIABLE)
– 替换掉当前环境的一个变量值,如果环境变量没有设置则launch会失败。该值不能 被重写
$(optenv ENVIRONMENT_VARIABLE)
$(optenv ENVIRONMENT_VARIABLE default_value)
–如果环境变量已设置,则替换他。如果提供了default_value,则环境变量没设置也可以替换。如果default_value没有提供,则会使用空字符串。default_value可以有多个词,由空格分开。
例子:
<param name="foo" value="$(optenv NUM_CPUS 1)" />
<param name="foo" value="$(optenv CONFIG_PATH /home/marvin/ros_workspace)" />
<param name="foo" value="$(optenv VARIABLE ros rocks)" />
default_value第一句是1.第二句:/home/marvin/ros_workspace,第三句: ros和rock
`$(find pkg)`
anon是anonymous的意思,这个是以[name]为基础生成一个匿名的id。两次及以上使用$(anon foo)会生成相同的id(这里foo是一个名字)。
`$(arg foo)`
$(arg foo) evaluates to the value specified by an tag. There must be a corresponding tag in the same launch file that declares the arg. 暂时不能理解。。。 大概就是能够将foo作为参数床给前面的什么东西。看例子
```
<param name="foo" value="$(arg my_foo)" />
<node name="add_two_ints_server" pkg="beginner_tutorials" type="add_two_ints_server" />
<node name="add_two_ints_client" pkg="beginner_tutorials" type="add_two_ints_client" args="$(arg a) $(arg b)" />
```
第一句能够把my_foo赋给参数parameter. 第二三句则是将a,b作为参数,传给add_two_ints。
- 具体例子:
参数赋值
```
</launch>```